/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/9/11 18:33
 * @Copyright
 */
package Polymorphism;

public class TestCatAndDog {
    public static void main(String[] args) {
        //多态形式，创建一个狗狗对象
        //好处是，提高了代码的扩展性
        //弊端是：只能使用父类共性的内容，而无法使用子类特有的功能，功能有限制
        Animal a = new Dog();//向上转型：当有子类对象赋值给一个父类引用的时候，便是向上转型
        a.eat();//调用对象中的方法，会执行狗类中的eat方法
        //a.lookHome();//使用Dog类中特有的方法，需要向下转型，不能直接使用
        //向下转型的过程中，可能会发生类型转换异常， 即ClassCastException
        //那么，在转之前进行判断
        if (!(a instanceof Dog)){//判断当前对象是否是Dog类型
            System.out.println("类型不匹配，不能转换");
            return;
        }
        Dog d =(Dog) a;//向下转型
        d.lookHome();//调用狗类的lookHome方法
    }
}
